package db;

import beans.B_ControlAuditoria;
import beans.B_DominioAuditoria;
import beans.B_ObjetivoControlAuditoria;
import beans.B_PlanAuditoria;
import beans.B_Pregunta;
import beans.B_PreguntaTipoEvaluacion;
import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import beans.B_RespuestaAuditoria;
import beans.B_TipoRespuesta;
import conexion.Conexion;
import java.sql.Types;

/**
 *
 * @author JoseHernan
 */
public class DB_RespuestaAuditoria {

    public static ArrayList<B_RespuestaAuditoria> getRespuestaAuditoriaById(int idRespuestaAuditoria) {
        ArrayList<B_RespuestaAuditoria> list = new ArrayList<B_RespuestaAuditoria>();
        try {
            Connection con = Conexion.getConexion();

            PreparedStatement ps;
            ResultSet rs;

            ps = con.prepareStatement(" select id, id_plan_auditoria, id_pregunta_tipo_evaluacion, id_tipo_respuestra, comentario "
                    + "from tbl_respuesta_auditoria  "
                    + "where removed = false and id = " + idRespuestaAuditoria);

            rs = ps.executeQuery();
            B_RespuestaAuditoria obj;
            B_PlanAuditoria objPlanAuditoria;
            B_PreguntaTipoEvaluacion objPreguntaTipoEvaluacion;
            B_TipoRespuesta objTipoRespuesta;
            while (rs.next()) {
                obj = new B_RespuestaAuditoria();
                //Asign values
                obj.setId(rs.getInt("id"));
                objPlanAuditoria = new B_PlanAuditoria();
                objPlanAuditoria.setId(rs.getInt("id_plan_auditoria"));
                obj.setObjPlanAuditoria(objPlanAuditoria);
                objPreguntaTipoEvaluacion = new B_PreguntaTipoEvaluacion();
                objPreguntaTipoEvaluacion.setId(rs.getInt("id_pregunta_tipo_evaluacion"));
                obj.setObjPreguntaTipoEvaluacion(objPreguntaTipoEvaluacion);
                objTipoRespuesta = new B_TipoRespuesta();
                objTipoRespuesta.setId(rs.getInt("id_tipo_respuestra"));
                obj.setComentario(rs.getString("comentario"));
                obj.setObjTipoRespuesta(objTipoRespuesta);
                //Add to List
                list.add(obj);
            }
            rs.close();
            ps.close();
            con.close();
        } catch (Exception ex) {
            System.out.println(ex);
        }
        return list;
    }
    
    public static ArrayList<B_RespuestaAuditoria> getListByIdPreguntaTipoEvaluacion(int idPreguntaTipoEvaluacion) {
        ArrayList<B_RespuestaAuditoria> list = new ArrayList<B_RespuestaAuditoria>();
        try {
            Connection con = Conexion.getConexion();

            PreparedStatement ps;
            ResultSet rs;

            ps = con.prepareStatement(" select id, id_plan_auditoria, id_pregunta_tipo_evaluacion, id_tipo_respuestra, comentario "
                    + "from tbl_respuesta_auditoria  "
                    + "where removed = false and id_plan_auditoria = (select id from tbl_plan_auditoria where removed = false and is_active = true) and id_pregunta_tipo_evaluacion = " + idPreguntaTipoEvaluacion);

            rs = ps.executeQuery();
            B_RespuestaAuditoria obj;
            B_PlanAuditoria objPlanAuditoria;
            B_PreguntaTipoEvaluacion objPreguntaTipoEvaluacion;
            B_TipoRespuesta objTipoRespuesta;
            while (rs.next()) {
                obj = new B_RespuestaAuditoria();
                //Asign values
                obj.setId(rs.getInt("id"));
                objPlanAuditoria = new B_PlanAuditoria();
                objPlanAuditoria.setId(rs.getInt("id_plan_auditoria"));
                obj.setObjPlanAuditoria(objPlanAuditoria);
                objPreguntaTipoEvaluacion = new B_PreguntaTipoEvaluacion();
                objPreguntaTipoEvaluacion.setId(rs.getInt("id_pregunta_tipo_evaluacion"));
                obj.setObjPreguntaTipoEvaluacion(objPreguntaTipoEvaluacion);
                objTipoRespuesta = new B_TipoRespuesta();
                objTipoRespuesta.setId(rs.getInt("id_tipo_respuestra"));
                obj.setComentario(rs.getString("comentario"));
                obj.setObjTipoRespuesta(objTipoRespuesta);
                //Add to List
                list.add(obj);
            }
            rs.close();
            ps.close();
            con.close();
        } catch (Exception ex) {
            System.out.println(ex);
        }
        return list;
    }

    //SP VALIDA SI TIENE CRITERIOS ASIGNADOS PARA EMPEZAR CON LAS PREGUNTAS
    public static String validCuestionario() {
        String result = "";
        CallableStatement cs = null;
        Connection con = Conexion.getConexion();
        try {
            cs = con.prepareCall("{call sp_valid_cuestionario(?,?)}");

            cs.registerOutParameter("p_message", Types.VARCHAR);
            cs.registerOutParameter("p_id_plan_auditoria", Types.VARCHAR);
            cs.executeUpdate();
            result = cs.getString(1) + cs.getInt(2);
        } catch (Exception ex) {
            result = ex.getMessage();
        } finally {
            try {
                cs.close();
                con.close();
            } catch (Exception ex) {
                System.out.println(ex);
            }
        }
        return result;
    }

    public static String crud(B_RespuestaAuditoria obj, String action) {
        String result = "";
        CallableStatement cs = null;
        Connection con = Conexion.getConexion();
        try {
            cs = con.prepareCall("{call sp_crud_respuesta_auditoria(?,?,?,?,?,?,?,?)}");

            cs.registerOutParameter("p_message", Types.VARCHAR);
            cs.setString("p_action", action);
            cs.setInt("p_id", obj.getId());
            cs.setInt("p_id_plan_auditoria", obj.getObjPlanAuditoria().getId());
            cs.setInt("p_id_pregunta_tipo_evaluacion", obj.getObjPreguntaTipoEvaluacion().getId());
            cs.setInt("p_id_tipo_respuestra", obj.getObjTipoRespuesta().getId());
            cs.setString("p_comentario", obj.getComentario());
            cs.setString("p_user", obj.getUser());
            cs.executeUpdate();
            result = cs.getString(1);
        } catch (Exception ex) {
            result = ex.getMessage();
        } finally {
            try {
                cs.close();
                con.close();
            } catch (Exception ex) {
                System.out.println(ex);
            }
        }
        return result;
    }
}
